gamedevtycoonfandomcom-20200222-history
Review Algorithm/1.4.4
When you publish a new game, a notification appears 3 ticks (little squares next to the week) after to tell you that first reviews are out. These reviews have a huge impact on sales, thus the need to maximize your score. This will explain how the review score is calculated. The article will follow the logical progression in the code of the game to allow for better comprehension if you read the code at the same time. Only one score is generated for a game. Then an artificial transformation is applied to get the four scores you can see on the review screen Necessary data tables will be in the article Raw Data Preparations Perfect score and Technical expertise For each development focus that has an importance of >= 0.9 for the genre of the game, count the number of experts (in the corresponding dev focus) assigned. Let this number be ec. The first thing the game does is to check whether it is possible for the game to get a perfect score. If ec >= 2, a perfect score of 10/10/10/10 is possible. '''Otherwise (in particular if the game is of small size, you cannot assign staff to single pieces of the game) the maximum possible score will '''always be 10/10/10/9. Let tl be the tech level defined in Raw Data : Tech Level. The technical expertise factor is computed as follows: Examples and Consequences *Only experts determine whether a perfect score is possible, for all games sizes (except small, for which cannot assign individual developers). *The tech level has an effect on the score only for large and AAA games. For large games, a tech level greater 3 and for AAA games a tech level greater 5 has no additional effect on the score. Moreover, for AAA games you need at least tech level 3 to increase the score (note that for AAA games, k is indeed calculated with 5 as a base level but clamped to 3). *Experts have an effect on the technical expertise factor only for AAA games. Previous High Scores Modifier For each game, a game score, g is computed (see Final Score Calculation). The Top Score is the highest game score (updated only when the score s>=9). Let Y be a modifier depending of the current in-game year : Then we introduce a b factor : *If you have exactly one game rated >= 9, b = 2 *If you have exactly two games rated >= 9, b is **Whatever is greater between (Top Score - 2nd Score) and (0.1 * (Top Score + 2*Y)) **But it has to be less than 0.2 * Top Score or it just becomes 0.2 * Top Score *If you have three or more games rated >= 9, b is **Whatever is greater between (Top Score - 2nd Score) and (0.1 * (Top Score + (Value of b for previous game)*Y)) **But it has to be less than 0.2 * Top Score or it just becomes 0.2 * Top Score In short to accurately know your b, you have to have tracked it since your second game rated 9+, or you can hardly be sure of it. Note : ''In any case you have 1.12 <= b (because Top Score is >= 9 and Y >= 1.1). Then your previous performance modifier is Top Score + b * Y Or 20 if you have no Top score (meaning all your games were "not counted as top score" in Post Treatment) Review Score calculation The first step is to compute a factor that intervenes later in the process : Quality factor calculation *q (quality factor) is initially q=0 *MMOMOD is initially MMOMOD = 1 if your game is not an MMO, MMOMOD = 2 if it is ''Tech/Design balance (Only taken into account if Tech + Design >= 30) : Tech is the number in the blue circle, Design the number in the light orange circle. : Let R be the optimal ratio for the selected genre in Raw Data : Tech/Design ratio, T and D the Technology and Design scores respectively t = (D * R - T)/max(T,D) *If |t| <= 0.25 : q increased by 0.1, and a "good balance" message is added to the queue *If |t| > 0.50 : q decreased by 0.1, and a "bad balance" message is added to the queue *Other values : nothing happens *Example: **Adventure game (R = 0.4) finished with D=50 T=20 ***t = (50 * 0.4 - 20) / 50 = 0 - q increased by 0.1, good balance message added **Action game (R = 1.8) finished with D=50 T=20 ***t = (50 * 1.8 - 20) / 50 = 1.4 - q decreased by 0.1, bad balance message added ''Design decisions'' : Relevant numerical values are in Raw Data : Development Focus *If you spent more than 40% of a phase (on the lower "time allocation bar" not 40% of a slider) on a design goal >= 0.9 : **2+ times : q increased by 0.2, and message "focus on X served game well" is added to the queue **1 time : q increased by 0.1, no message **never : q decreased by 0.15 * MMOMOD, no message *If you spent more than 40% of a phase on a goal < 0.8 : **Twice : q decreased by 0.2 * MMOMOD, and message "focus on X is a bit odd" **Once : q decreased by 0.1 * MMOMOD, no message *If you spent less than 20% of a phase on a goal >= 0.9 : **q decreased by 0.15 * MMOMOD, and message "shouldn't forget about X" for each time it happened ''Combination study'' : In the case of multigenre titles the value is always 2/3 * Genre 1 + 1/3 * Genre 2 Topic / Genre :: See numerical values at Raw Data : Topic Genre Combinations *<= 0.6 : "Strange combination" message added to the queue *= 1 : "Great combination" message added to the queue :: Note : at this stage no penalty is applied to the score for fitting/unfitting combinations Platform/Genre :: See numerical values at Raw Data : Platform Genre Combinations *<= 0.6 : "Genre does not work well on Platform" message added to the queue *= 1 : "Genre works well on Platform" message added to the queue Topic/Audience :: See numerical values at Raw Data : Platform Genre Combinations *<= 0.6 : "Theme is an horrible theme for Audience" message added to the queue Various checks *If the combination of Topic/Genre/Second Genre is the exact same as the previous released title, a penalty of -0.4 is applied to q *If the game is a sequel (or an expansion) to a game released less than 40 weeks ago, a penalty of -0.4 is applied to q *If the game is a sequel (not an expansion) and uses the same engine as the previous game in the series, a penalty of -0.1 is applied to q *If the game is a sequel and uses a better engine than the previous game, a bonus of +0.2 is applied to q *If the game is an MMO and the Topic/Genre combination is <1 then 0.15 is deduced from q Bug ratio calculation (only if there are bugs ie bugs > 0, else the ratio is 1) r = 1 - (0.8 * [ (# of bugs) * 100 / (Tech + Design) ] / 100) in which the [] means that "(# of bugs) * 100 / (Tech + Design)" is clamped between 0 and 100 *If r <= 0.6 a "Riddled with bugs" message is added to the queue *If r < 0.9 a "Too many bugs" message is added to the queue Trend factor calculation (only if there is a trend going, else factor is 1) There are 4 types of trend: genre, new topic, audience and "strange combos". If trend type is Genre / "New Topic" / Audience. *If you hit the trend, t = 1.2. *If you don't hit the trend, t = 1. If trend type is "Strange Combos", t depends on the Topic/Genre value (from raw data). *If value is 1 (great combo), t = 0.85 *If value is 0.9, t = 1.1 *If value is 0.8, t = 1.2 *If value is <0.8, t = 1.4 Yes, you are penalized for not following the "Strange Combos" trend. Final Score calculation and post-treatment At this stage, the first meaningful score is generated : *m = (Design + Tech) / (2 * Multiplier 2) (In Raw Data : Size Constants) *p : Platform / Genre value *o : Topic / Audience value *r : bug ratio (calculated above) *t : trend factor (calculated above) *h : Previous High Scores Modifier *x : Technical expertise factor *A means A put back between 1 and 10 : if A > 10 then A = 10, if A < 1 then A = 1, all other cases A = A g = (m + q * m) * p * o * r * t g is the game score, which will be used to update the previous high scores modifier for the next game, if the conditions set in Review_Algorithm#Post-Treatment are met Then, for the rest of the process we will use the review score : S = * g / h * x / 10 Post-Treatment First Pass : The first pass of post-treatment only happens when certain conditions are met : *The S score must be >= 9 *If the quality factor q is < 0.1 there is a 80% likelihood that it happens *If a staff member has been responsible for more than 0.2 and less than 2 games in his carreer it always happens (provided S >= 9) (decimal values are for medium or larger games when a staff member is x% loaded) : It then generates a random number : *75 % chance that the score becomes a random value in range ; 9.1 *25% chance that score becomes a random value in range ; 9.25 Second Pass : The second pass of post-treatment happens only before Year 4, if the player has published less than 2 games that count as a high score (conditions in this paragraph). Let S be the score after the optional first pass. *If S = 10 then the score becomes a random number in range ; 9.95, but will still count as a high score *If 10 > S >= 9 then the score is decreased by a random number in range ; 1.25, but will still count as a high score *If 9 > S > 8.5 then the score is decreased by a random number in range ; 0.6, and will not count as a high score : If the score is still >= 9 then it is counted as a high score : If the score is a high score and it is exactly the third one, it is arbitrarily set to 10 : Congratulations ! you now know your real review score : However there is a final step to get the review screen : Review Screen The "real" score is first rounded down. Then, each reviewer's score and message is generated as such : #Determine score inflation #*A random value is added to the score. it can be : #**0 : 50% chance #**1 : 25 % chance #**-1 : 25 % chance #*Except if score is 5 or 6, then : #**0 : 50% chance #**1 : 23.75% #**-1 : 23.75 % #**2 : 1.25 % #**-2 : 1.25 % #*Score is then clamped between 1 and 10 #If we are generating the fourth score and the three previous ones were 10 and this one is supposed to be 10 too, then if a perfect score cannot be reached (see Perfect score and Technical expertise), this score becomes a 9. #Generate messages : there are three message queues : good ones, bad ones (generated during score calculation) and standard ones #*If score < 2 : pick a bad message #*if score < 6 : pick a good message #*Else pick a standard message Category:Results Optimization